package com.itheima.job;

import java.util.*;

public class Test07 {
    public static void main(String[] args) {
        Collection<Integer> numbers = new ArrayList<>();
        Collections.addAll(numbers,1,2,2,3,3,4);
        Map<Integer, List<Integer>> classify = classify(numbers);
        Set<Map.Entry<Integer, List<Integer>>> entries = classify.entrySet();
        for (Map.Entry<Integer, List<Integer>> entry : entries) {
            System.out.println(entry);
        }

    }
    /**
     * 对给定的数字列表进行分组，要求返回的Map中，Key为数字，Value为该数字出现的列表。
     * 例如，输入的数字列表为：[1,2,3,3,4,2]，
     * 那么返回值应为：{1=[1],2=[2,2],3=[3,3],4=[4]}
     */
    public static Map<Integer, List<Integer>> classify(Collection<Integer> numbers){
        //创建一个Map集合，用于保存需要返回的数据
        Map<Integer,List<Integer>> map = new HashMap<>();
        //定义一个List类型的变量
        List<Integer> list = null;
        //TODO在这里补足代码

        //遍历获得numbers的所有值
        for (Integer integer : numbers) {
            //判断当前map集合中是否有目前这个元素为键的
            if (map.containsKey(integer)){
                //有的话，把当前键所对应的值，给list；
                list = map.get(integer);
            }else {
                //没有的话，为list新建一个集合，不然它就为null
                list = new ArrayList<>();
            }
            //在list集合中添加这次遍历出的元素
            list.add(integer);
            //添加到map集合中，以当前遍历出来的元素为键，list集合为值
            map.put(integer,list);
        }

        return map;
    }
}
